home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / GameCreators / Inform / library / english.h next >
Encoding:
Text File  |  1997-03-15  |  34.2 KB  |  862 lines

  1. ! ===========================================================================
  2. !   Inform Language Definition File: English 970918
  3. !
  4. !   (c) Graham Nelson 1997
  5. !
  6. !   Define the constant DIALECT_US before including "Parser" to
  7. !   obtain American English
  8. ! ---------------------------------------------------------------------------
  9. System_file;
  10. ! ---------------------------------------------------------------------------
  11. !   Part I.   Preliminaries
  12. ! ---------------------------------------------------------------------------
  13. Constant EnglishNaturalLanguage;   ! Needed to keep old pronouns mechanism
  14.  
  15. Class  CompassDirection
  16.   with article "the", number 0
  17.   has  scenery;
  18. Object Compass "compass" has concealed;
  19. IFNDEF WITHOUT_DIRECTIONS;
  20. CompassDirection -> n_obj "north wall"
  21.                     with name 'n//' 'north' 'wall',    door_dir n_to;
  22. CompassDirection -> s_obj "south wall"
  23.                     with name 's//' 'south' 'wall',    door_dir s_to;
  24. CompassDirection -> e_obj "east wall"
  25.                     with name 'e//' 'east' 'wall',     door_dir e_to;
  26. CompassDirection -> w_obj "west wall"
  27.                     with name 'w//' 'west' 'wall',     door_dir w_to;
  28. CompassDirection -> ne_obj "northeast wall"
  29.                     with name 'ne' 'northeast' 'wall', door_dir ne_to;
  30. CompassDirection -> nw_obj "northwest wall"
  31.                     with name 'nw' 'northwest' 'wall', door_dir nw_to;
  32. CompassDirection -> se_obj "southeast wall"
  33.                     with name 'se' 'southeast' 'wall', door_dir se_to;
  34. CompassDirection -> sw_obj "southwest wall"
  35.                     with name 'sw' 'southwest' 'wall', door_dir sw_to;
  36. CompassDirection -> u_obj "ceiling"
  37.                     with name 'u//' 'up' 'ceiling',    door_dir u_to;
  38. CompassDirection -> d_obj "floor"
  39.                     with name 'd//' 'down' 'floor',    door_dir d_to;
  40. ENDIF;
  41. CompassDirection -> out_obj "outside"
  42.                     with                               door_dir out_to;
  43. CompassDirection -> in_obj "inside"
  44.                     with                               door_dir in_to;
  45. ! ---------------------------------------------------------------------------
  46. !   Part II.   Vocabulary
  47. ! ---------------------------------------------------------------------------
  48. Constant AGAIN1__WD   = 'again';
  49. Constant AGAIN2__WD   = 'g//';
  50. Constant AGAIN3__WD   = 'again';
  51. Constant OOPS1__WD    = 'oops';
  52. Constant OOPS2__WD    = 'o//';
  53. Constant OOPS3__WD    = 'oops';
  54. Constant UNDO1__WD    = 'undo';
  55. Constant UNDO2__WD    = 'undo';
  56. Constant UNDO3__WD    = 'undo';
  57.  
  58. Constant ALL1__WD     = 'all';
  59. Constant ALL2__WD     = 'each';
  60. Constant ALL3__WD     = 'every';
  61. Constant ALL4__WD     = 'everything';
  62. Constant ALL5__WD     = 'both';
  63. Constant AND1__WD     = 'and';
  64. Constant AND2__WD     = 'and';
  65. Constant AND3__WD     = 'and';
  66. Constant BUT1__WD     = 'but';
  67. Constant BUT2__WD     = 'except';
  68. Constant BUT3__WD     = 'but';
  69. Constant ME1__WD      = 'me';
  70. Constant ME2__WD      = 'myself';
  71. Constant ME3__WD      = 'self';
  72. Constant OF1__WD      = 'of';
  73. Constant OF2__WD      = 'of';
  74. Constant OF3__WD      = 'of';
  75. Constant OF4__WD      = 'of';
  76. Constant OTHER1__WD   = 'another';
  77. Constant OTHER2__WD   = 'other';
  78. Constant OTHER3__WD   = 'other';
  79. Constant THEN1__WD    = 'then';
  80. Constant THEN2__WD    = 'then';
  81. Constant THEN3__WD    = 'then';
  82.  
  83. Constant NO1__WD      = 'n//';
  84. Constant NO2__WD      = 'no';
  85. Constant NO3__WD      = 'no';
  86. Constant YES1__WD     = 'y//';
  87. Constant YES2__WD     = 'yes';
  88. Constant YES3__WD     = 'yes';
  89.  
  90. Constant AMUSING__WD  = 'amusing';
  91. Constant FULLSCORE1__WD = 'fullscore';
  92. Constant FULLSCORE2__WD = 'full';
  93. Constant QUIT1__WD    = 'q//';
  94. Constant QUIT2__WD    = 'quit';
  95. Constant RESTART__WD  = 'restart';
  96. Constant RESTORE__WD  = 'restore';
  97.  
  98. Array LanguagePronouns table
  99.  
  100.    !  word       possible GNAs                   connected
  101.    !             to follow:                      to:
  102.    !             a     i
  103.    !             s  p  s  p
  104.    !             mfnmfnmfnmfn                 
  105.  
  106.       'it'     $$001000111000                    NULL
  107.       'him'    $$100000000000                    NULL
  108.       'her'    $$010000000000                    NULL
  109.       'them'   $$000111000111                    NULL;
  110.  
  111. Array LanguageDescriptors table
  112.  
  113.    !  word       possible GNAs   descriptor      connected
  114.    !             to follow:      type:           to:
  115.    !             a     i
  116.    !             s  p  s  p
  117.    !             mfnmfnmfnmfn                 
  118.  
  119.       'my'     $$111111111111    POSSESS_PK      0
  120.       'this'   $$111111111111    POSSESS_PK      0
  121.       'these'  $$000111000111    POSSESS_PK      0
  122.       'that'   $$111111111111    POSSESS_PK      1
  123.       'those'  $$000111000111    POSSESS_PK      1
  124.       'his'    $$111111111111    POSSESS_PK      'him'
  125.       'her'    $$111111111111    POSSESS_PK      'her'
  126.       'their'  $$111111111111    POSSESS_PK      'them'
  127.       'its'    $$111111111111    POSSESS_PK      'it'
  128.       'the'    $$111111111111    DEFART_PK       NULL
  129.       'a//'    $$111000111000    INDEFART_PK     NULL
  130.       'an'     $$111000111000    INDEFART_PK     NULL
  131.       'some'   $$000111000111    INDEFART_PK     NULL
  132.       'lit'    $$111111111111    light           NULL
  133.      'lighted' $$111111111111    light           NULL
  134.       'unlit'  $$111111111111    (-light)        NULL;
  135.  
  136. Array LanguageNumbers table
  137.     'one' 1 'two' 2 'three' 3 'four' 4 'five' 5
  138.     'six' 6 'seven' 7 'eight' 8 'nine' 9 'ten' 10
  139.     'eleven' 11 'twelve' 12 'thirteen' 13 'fourteen' 14 'fifteen' 15
  140.     'sixteen' 16 'seventeen' 17 'eighteen' 18 'nineteen' 19 'twenty' 20;
  141.  
  142. ! ---------------------------------------------------------------------------
  143. !   Part III.   Translation
  144. ! ---------------------------------------------------------------------------
  145.  
  146. [ LanguageToInformese;
  147. ];
  148.  
  149. ! ---------------------------------------------------------------------------
  150. !   Part IV.   Printing
  151. ! ---------------------------------------------------------------------------
  152.  
  153. Constant LanguageAnimateGender   = male;
  154. Constant LanguageInanimateGender = neuter;
  155.  
  156. Constant LanguageContractionForms = 2;     ! English has two:
  157.                                            ! 0 = starting with a consonant
  158.                                            ! 1 = starting with a vowel
  159.  
  160. [ LanguageContraction text;
  161.   if (text->0 == 'a' or 'e' or 'i' or 'o' or 'u'
  162.                  or 'A' or 'E' or 'I' or 'O' or 'U') return 1;
  163.   return 0;
  164. ];
  165.  
  166. Array LanguageArticles -->
  167.  
  168.  !   Contraction form 0:     Contraction form 1:
  169.  !   Cdef   Def    Indef     Cdef   Def    Indef
  170.  
  171.      "The " "the " "a "      "The " "the " "an "          ! Articles 0
  172.      "The " "the " "some "   "The " "the " "some ";       ! Articles 1
  173.  
  174.                    !             a           i
  175.                    !             s     p     s     p
  176.                    !             m f n m f n m f n m f n                 
  177.  
  178. Array LanguageGNAsToArticles --> 0 0 0 1 1 1 0 0 0 1 1 1;
  179.  
  180. [ LanguageDirection d;
  181.    switch(d)
  182.    {   n_to: print "north";
  183.        s_to: print "south";
  184.        e_to: print "east";
  185.        w_to: print "west";
  186.        ne_to: print "northeast";
  187.        nw_to: print "northwest";
  188.        se_to: print "southeast";
  189.        sw_to: print "southwest";
  190.        u_to: print "up";
  191.        d_to: print "down";
  192.        in_to: print "in";
  193.        out_to: print "out";
  194.        default: return RunTimeError(9,d);
  195.    }
  196. ];
  197.  
  198. [ LanguageNumber n f;
  199.   if (n==0)    { print "zero"; rfalse; }
  200.   if (n<0)     { print "minus "; n=-n; }
  201.   if (n>=1000) { print (LanguageNumber) n/1000, " thousand"; n=n%1000; f=1; }
  202.   if (n>=100)  { if (f==1) print ", ";
  203.                  print (LanguageNumber) n/100, " hundred"; n=n%100; f=1; }
  204.   if (n==0) rfalse;
  205.   #ifndef DIALECT_US;
  206.   if (f==1) print " and ";
  207.   #ifnot;
  208.   if (f==1) print " ";
  209.   #endif;
  210.   switch(n)
  211.   {   1:  print "one";
  212.       2:  print "two";
  213.       3:  print "three";
  214.       4:  print "four";
  215.       5:  print "five";
  216.       6:  print "six";
  217.       7:  print "seven";
  218.       8:  print "eight";
  219.       9:  print "nine";
  220.       10: print "ten";
  221.       11: print "eleven";
  222.       12: print "twelve";
  223.       13: print "thirteen";
  224.       14: print "fourteen";
  225.       15: print "fifteen";
  226.       16: print "sixteen";
  227.       17: print "seventeen";
  228.       18: print "eighteen";
  229.       19: print "nineteen";
  230.       20 to 99:
  231.           switch(n/10)
  232.           {  2: print "twenty";
  233.              3: print "thirty";
  234.              4: print "forty";
  235.              5: print "fifty";
  236.              6: print "sixty";
  237.              7: print "seventy";
  238.              8: print "eighty";
  239.              9: print "ninety";
  240.           }
  241.           if (n%10 ~= 0) print "-", (LanguageNumber) n%10;
  242.   }
  243. ];
  244.  
  245. [ LanguageTimeOfDay hours mins i;
  246.    i=hours%12;
  247.    if (i==0) i=12;
  248.    if (i<10) print " ";
  249.    print i, ":", mins/10, mins%10;
  250.    if ((hours/12) > 0) print " pm"; else print " am";
  251. ];
  252.  
  253. [ LanguageVerb i;
  254.    if (i==#n$l)        { print "look";              rtrue; }
  255.    if (i==#n$z)        { print "wait";              rtrue; }
  256.    if (i==#n$x)        { print "examine";           rtrue; }
  257.    if (i==#n$i or 'inv' or 'inventory')
  258.                        { print "inventory";         rtrue; }
  259.    rfalse;
  260. ];
  261.  
  262. Constant NKEY__TX     = "N = next subject";
  263. Constant PKEY__TX     = "P = previous";
  264. Constant QKEY1__TX    = "  Q = resume game";
  265. Constant QKEY2__TX    = "Q = previous menu";
  266. Constant RKEY__TX     = "RETURN = read subject";
  267.  
  268. Constant NKEY1__KY    = 'N';
  269. Constant NKEY2__KY    = 'n';
  270. Constant PKEY1__KY    = 'P';
  271. Constant PKEY2__KY    = 'p';
  272. Constant QKEY1__KY    = 'Q';
  273. Constant QKEY2__KY    = 'q';
  274.  
  275. Constant SCORE__TX    = "Score: ";
  276. Constant MOVES__TX    = "Moves: ";
  277. Constant TIME__TX     = "Time: ";
  278. Constant CANTGO__TX   = "You can't go that way.";
  279. Constant FORMER__TX   = "your former self";
  280. Constant YOURSELF__TX = "yourself";
  281. Constant DARKNESS__TX = "Darkness";
  282.  
  283. Constant THOSET__TX   = "those things";
  284. Constant THAT__TX     = "that";
  285. Constant OR__TX       = " or ";
  286. Constant NOTHING__TX  = "nothing";
  287. Constant IS__TX       = " is";
  288. Constant ARE__TX      = " are";
  289. Constant IS2__TX      = "is ";
  290. Constant ARE2__TX     = "are ";
  291. Constant AND__TX      = " and ";
  292. Constant WHOM__TX     = "whom ";
  293. Constant WHICH__TX    = "which ";
  294.  
  295. [ ThatorThose obj;   ! Used in the accusative
  296.   if (obj == player) { print "you"; return; }
  297.   if (obj has pluralname) { print "those"; return; }
  298.   if (obj has animate)
  299.   {   if (obj has female) { print "her"; return; }
  300.       else if (obj hasnt neuter) { print "him"; return; }
  301.   }
  302.   print "that";
  303. ];
  304. [ ItorThem obj;
  305.   if (obj == player) { print "yourself"; return; }
  306.   if (obj has pluralname) { print "them"; return; }
  307.   if (obj has animate)
  308.   {   if (obj has female) { print "her"; return; }
  309.       else if (obj hasnt neuter) { print "him"; return; }
  310.   }
  311.   print "it";
  312. ];
  313. [ IsorAre obj;
  314.   if (obj has pluralname || obj == player) print "are"; else print "is";
  315. ];
  316. [ CThatorThose obj;   ! Used in the nominative
  317.   if (obj == player) { print "You"; return; }
  318.   if (obj has pluralname) { print "Those"; return; }
  319.   if (obj has animate)
  320.   {   if (obj has female) { print "She"; return; }
  321.       else if (obj hasnt neuter) { print "He"; return; }
  322.   }
  323.   print "That";
  324. ];
  325. [ CTheyreorThats obj;
  326.   if (obj == player) { print "You're"; return; }
  327.   if (obj has pluralname) { print "They're"; return; }
  328.   if (obj has animate)
  329.   {   if (obj has female) { print "She's"; return; }
  330.       else if (obj hasnt neuter) { print "He's"; return; }
  331.   }
  332.   print "That's";
  333. ];
  334.  
  335. [ LanguageLM n x1;
  336.   Prompt:  print "^>";
  337.   Miscellany:
  338.            switch(n)
  339.            {   1: "(considering the first sixteen objects only)^";
  340.                2: "Nothing to do!";
  341.                3: print " You have died ";
  342.                4: print " You have won ";
  343.                5: print "^Would you like to RESTART, RESTORE a saved game";
  344.                   #IFDEF DEATH_MENTION_UNDO;
  345.                   print ", UNDO your last move";
  346.                   #ENDIF;
  347.                   if (TASKS_PROVIDED==0)
  348.                       print ", give the FULL score for that game";
  349.                   if (deadflag==2 && AMUSING_PROVIDED==0)
  350.                       print ", see some suggestions for AMUSING things to do";
  351.                   " or QUIT?";
  352.                6: "[Your interpreter does not provide ~undo~.  Sorry!]";
  353.                7: "~Undo~ failed.  [Not all interpreters provide it.]";
  354.                8: "Please give one of the answers above.";
  355.                9: "^It is now pitch dark in here!";
  356.               10: "I beg your pardon?";
  357.               11: "[You can't ~undo~ what hasn't been done!]";
  358.               12: "[Can't ~undo~ twice in succession. Sorry!]";
  359.               13: "[Previous turn undone.]";
  360.               14: "Sorry, that can't be corrected.";
  361.               15: "Think nothing of it.";
  362.               16: "~Oops~ can only correct a single word.";
  363.               17: "It is pitch dark, and you can't see a thing.";
  364.               18: print "yourself";
  365.               19: "As good-looking as ever.";           
  366.               20: "To repeat a command like ~frog, jump~, just say
  367.                    ~again~, not ~frog, again~.";
  368.               21: "You can hardly repeat that.";
  369.               22: "You can't begin with a comma.";
  370.               23: "You seem to want to talk to someone, but I can't see whom.";
  371.               24: "You can't talk to ", (the) x1, ".";
  372.               25: "To talk to someone, try ~someone, hello~ or some such.";
  373.               26: "(first taking ", (the) not_holding, ")";
  374.               27: "I didn't understand that sentence.";
  375.               28: print "I only understood you as far as wanting to ";
  376.               29: "I didn't understand that number.";
  377.               30: "You can't see any such thing.";
  378.               31: "You seem to have said too little!";
  379.               32: "You aren't holding that!";
  380.               33: "You can't use multiple objects with that verb.";
  381.               34: "You can only use multiple objects once on a line.";
  382.               35: "I'm not sure what ~", (address) pronoun_word,
  383.                   "~ refers to.";
  384.               36: "You excepted something not included anyway!";
  385.               37: "You can only do that to something animate.";
  386.               38: #ifdef DIALECT_US;
  387.                   "That's not a verb I recognize.";
  388.                   #ifnot;
  389.                   "That's not a verb I recognise.";
  390.                   #endif;
  391.               39: "That's not something you need to refer to
  392.                    in the course of this game.";
  393.               40: "You can't see ~", (address) pronoun_word,
  394.                   "~ (", (the) pronoun_obj, ") at the moment.";
  395.               41: "I didn't understand the way that finished.";
  396.               42: if (x1==0) print "None";
  397.                   else print "Only ", (number) x1;
  398.                   print " of those ";
  399.                   if (x1==1) print "is"; else print "are";
  400.                   " available.";
  401.               43: "Nothing to do!";
  402.               44: "There are none at all available!";
  403.               45: print "Who do you mean, ";
  404.               46: print "Which do you mean, ";
  405.               47: "Sorry, you can only have one item here. Which exactly?";
  406.               48: print "Whom do you want";
  407.                   if (actor~=player) print " ", (the) actor; print " to ";
  408.                   PrintCommand(); print "?^";
  409.               49: print "What do you want";
  410.                   if (actor~=player) print " ", (the) actor; print " to ";
  411.                   PrintCommand(); print "?^";
  412.               50: print "Your score has just gone ";
  413.                   if (x1 > 0) print "up"; else { x1 = -x1; print "down"; }
  414.                   print " by ", (number) x1, " point";
  415.                   if (x1 > 1) print "s";
  416.               51: "(Since something dramatic has happened,
  417.                    your list of commands has been cut short.)";
  418.               52: "^Type a number from 1 to ", x1,
  419.                   ", 0 to redisplay or press ENTER.";
  420.               53: "^[Please press SPACE.]";
  421.            }
  422.  
  423.   ListMiscellany:
  424.            switch(n)
  425.            {   1: print " (providing light)";
  426.                2: print " (which ", (isorare) x1, " closed)";
  427.                3: print " (closed and providing light)";
  428.                4: print " (which ", (isorare) x1, " empty)";
  429.                5: print " (empty and providing light)";
  430.                6: print " (which ", (isorare) x1, " closed and empty)";
  431.                7: print " (closed, empty and providing light)";
  432.                8: print " (providing light and being worn";
  433.                9: print " (providing light";
  434.               10: print " (being worn";
  435.               11: print " (which ", (isorare) x1, " ";
  436.               12: print "open";
  437.               13: print "open but empty";
  438.               14: print "closed";
  439.               15: print "closed and locked";
  440.               16: print " and empty";
  441.               17: print " (which ", (isorare) x1, " empty)";
  442.               18: print " containing ";
  443.               19: print " (on ";
  444.               20: print ", on top of ";
  445.               21: print " (in ";
  446.               22: print ", inside ";
  447.            }
  448.  
  449.   Pronouns: switch(n)
  450.            {   1: print "At the moment, ";
  451.                2: print "means ";
  452.                3: print "is unset";
  453.                4: "no pronouns are known to the game.";
  454.            }
  455.   Order:          print (The) x1;
  456.                   if (x1 has pluralname) print " have"; else print " has";
  457.                   " better things to do.";
  458.   Quit:    switch(n)
  459.            {   1: print "Please answer yes or no.";
  460.                2: print "Are you sure you want to quit? ";
  461.            }
  462.   Restart: switch(n)
  463.            {   1: print "Are you sure you want to restart? ";
  464.                2: "Failed.";
  465.            }
  466.   Restore: switch(n)
  467.            {   1: "Restore failed.";
  468.                2: "Ok.";
  469.            }
  470.   Save:    switch(n)
  471.            {   1: "Save failed.";
  472.                2: "Ok.";
  473.            }
  474.   Verify:  switch(n)
  475.            {   1: "The game file has verified as intact.";
  476.                2: "The game file did not verify as intact,
  477.                    and may be corrupt.";
  478.            }
  479.   ScriptOn: switch(n)
  480.            {   1: "Transcripting is already on.";
  481.                2: "Start of a transcript of";
  482.                3: "Attempt to begin transcript failed.";
  483.            }
  484.   ScriptOff: switch(n)
  485.            {   1: "Transcripting is already off.";
  486.                2: "^End of transcript.";
  487.                3: "Attempt to end transcript failed.";
  488.            }
  489.   NotifyOn:       "Score notification on.";
  490.   NotifyOff:      "Score notification off.";
  491.   Places:         print "You have visited: ";
  492.   Objects: switch(n)
  493.            {   1: "Objects you have handled:^";
  494.                2: "None.";
  495.                3: print "   (worn)";
  496.                4: print "   (held)";
  497.                5: print "   (given away)";
  498.                6: print "   (in ", (name) x1, ")";
  499.                7: print "   (in ", (the) x1, ")";
  500.                8: print "   (inside ", (the) x1, ")";
  501.                9: print "   (on ", (the) x1, ")";
  502.               10: print "   (lost)";
  503.            }
  504.   Score:          if (deadflag) print "In that game you scored ";
  505.                   else print "You have so far scored ";
  506.                   print score, " out of a possible ", MAX_SCORE,
  507.                   ", in ", turns, " turn";
  508.                   if (turns>1) print "s"; return;
  509.   FullScore: switch(n)
  510.            {   1: if (deadflag) print "The score was ";
  511.                   else          print "The score is ";
  512.                   "made up as follows:^";
  513.                2: "finding sundry items";
  514.                3: "visiting various places";
  515.                4: print "total (out of ", MAX_SCORE; ")";
  516.            }
  517.   Inv:     switch(n)
  518.            {   1: "You are carrying nothing.";
  519.                2: print "You are carrying";
  520.            }
  521.   Take:    switch(n)
  522.            {   1: "Taken.";
  523.                2: "You are always self-possessed.";
  524.                3: "I don't suppose ", (the) x1, " would care for that.";
  525.                4: print "You'd have to get ";
  526.                   if (x1 has supporter) print "off "; else print "out of ";
  527.                   print_ret (the) x1, " first.";
  528.                5: "You already have ", (thatorthose) x1, ".";
  529.                6: if (noun has pluralname) print "Those seem ";
  530.                   else print "That seems ";
  531.                   "to belong to ", (the) x1, ".";
  532.                7: if (noun has pluralname) print "Those seem ";
  533.                   else print "That seems ";
  534.                   "to be a part of ", (the) x1, ".";
  535.                8: print_ret (Cthatorthose) x1, " ", (isorare) x1,
  536.                   "n't available.";
  537.                9: print_ret (The) x1, " ", (isorare) x1, "n't open.";
  538.               10: if (x1 has pluralname) print "They're ";
  539.                   else print "That's ";
  540.                   "hardly portable.";
  541.               11: if (x1 has pluralname) print "They're ";
  542.                   else print "That's ";
  543.                   "fixed in place.";
  544.               12: "You're carrying too many things already.";
  545.               13: "(putting ", (the) x1, " into ", (the) SACK_OBJECT,
  546.                   " to make room)";
  547.            }
  548.   Drop:    switch(n)
  549.            {   1: if (x1 has pluralname) print (The) x1, " are ";
  550.                   else print (The) x1, " is ";
  551.                   "already here.";
  552.                2: "You haven't got ", (thatorthose) x1, ".";
  553.                3: "(first taking ", (the) x1, " off)";
  554.                4: "Dropped.";
  555.            }
  556.   Remove:  switch(n)
  557.            {   1: if (x1 has pluralname) print "They are"; else print "It is ";
  558.                   " unfortunately closed.";
  559.                2: if (x1 has pluralname)
  560.                       print "But they aren't";
  561.                   else print "But it isn't";
  562.                   " there now.";
  563.                3: "Removed.";
  564.            }
  565.   PutOn:   switch(n)
  566.            {   1: "You need to be holding ", (the) x1,
  567.                   " before you can put ", (itorthem) x1,
  568.                   " on top of something else.";
  569.                2: "You can't put something on top of itself.";
  570.                3: "Putting things on ", (the) x1, " would achieve nothing.";
  571.                4: "You lack the dexterity.";
  572.                5: "(first taking ", (itorthem) x1, " off)^";
  573.                6: "There is no more room on ", (the) x1, ".";
  574.                7: "Done.";
  575.                8: "You put ", (the) x1, " on ", (the) second, ".";
  576.            }
  577.   Insert:  switch(n)
  578.            {   1: "You need to be holding ", (the) x1,
  579.                   " before you can put ", (itorthem) x1,
  580.                   " into something else.";
  581.                2: print_ret (Cthatorthose) x1, " can't contain things.";
  582.                3: print_ret (The) x1, " ", (isorare) x1, " closed.";
  583.                4: "You'll need to take ", (itorthem) x1, " off first.";
  584.                5: "You can't put something inside itself.";
  585.                6: "(first taking ", (itorthem) x1, " off)^";
  586.                7: "There is no more room in ", (the) x1, ".";
  587.                8: "Done.";
  588.                9: "You put ", (the) x1, " into ", (the) second, ".";
  589.            }
  590.   EmptyT:  switch(n)
  591.            {   1: print_ret (The) x1, " can't contain things.";
  592.                2: print_ret (The) x1, " ", (isorare) x1, " closed.";
  593.                3: print_ret (The) x1, " ", (isorare) x1, " empty already.";
  594.            }
  595.   Give:    switch(n)
  596.            {   1: "You aren't holding ", (the) x1, ".";
  597.                2: "You juggle ", (the) x1,
  598.                   " for a while, but don't achieve much.";
  599.                3: print (The) x1;
  600.                   if (x1 has pluralname) print " don't";
  601.                   else print " doesn't";
  602.                   " seem interested.";
  603.            }
  604.   Show:    switch(n)
  605.            {   1: "You aren't holding ", (the) x1, ".";
  606.                2: print_ret (The) x1, " ", (isorare) x1, " unimpressed.";
  607.            }
  608.   Enter:   switch(n)
  609.            {   1: print "But you're already ";
  610.                   if (x1 has supporter) print "on "; else print "in ";
  611.                   print_ret (the) x1, ".";
  612.                2: if (x1 has pluralname) print "They're"; else print "That's";
  613.                   " not something you can enter.";
  614.                3: "You can't get into the closed ", (name) x1, ".";
  615.                4: "You can only get into something freestanding.";
  616.                5: print "You get ";
  617.                   if (x1 has supporter) print "onto "; else print "into ";
  618.                   print_ret (the) x1, ".";
  619.                6: print "(getting ";
  620.                   if (x1 has supporter) print "off "; else print "out of ";
  621.                   print (the) x1; ")";
  622.                7: if (x1 has supporter) "(getting onto ", (the) x1, ")^";
  623.                   if (x1 has container) "(getting into ", (the) x1, ")^";
  624.                   "(entering ", (the) x1, ")^";
  625.            }
  626.   GetOff:         "But you aren't on ", (the) x1, " at the moment.";
  627.   Exit:    switch(n)
  628.            {   1: "But you aren't in anything at the moment.";
  629.                2: "You can't get out of the closed ", (name) x1, ".";
  630.                3: print "You get ";
  631.                   if (x1 has supporter) print "off "; else print "out of ";
  632.                   print_ret (the) x1, ".";
  633.            }
  634.   VagueGo:       "You'll have to say which compass direction to go in.";
  635.  
  636.   Go:      switch(n)
  637.            {   1: print "You'll have to get ";
  638.                   if (x1 has supporter) print "off "; else print "out of ";
  639.                   print_ret (the) x1, " first.";
  640.                2: "You can't go that way.";
  641.                3: "You are unable to climb ", (the) x1, ".";
  642.                4: "You are unable to descend by ", (the) x1, ".";
  643.                5: "You can't, since ", (the) x1, " ", (isorare) x1,
  644.                   " in the way.";
  645.                6: print "You can't, since ", (the) x1;
  646.                   if (x1 has pluralname) " lead nowhere.";
  647.                   " leads nowhere.";
  648.            }
  649.  
  650.   LMode1:         " is now in its normal ~brief~ printing mode, which gives
  651.                    long descriptions of places never before visited and short
  652.                    descriptions otherwise.";
  653.   LMode2:         " is now in its ~verbose~ mode, which always gives long
  654.                    descriptions of locations
  655.                    (even if you've been there before).";
  656.   LMode3:         " is now in its ~superbrief~ mode, which always gives short
  657.                    descriptions of locations
  658.                    (even if you haven't been there before).";
  659.  
  660.   Look:    switch(n)
  661.            {   1: print " (on ", (the) x1, ")";
  662.                2: print " (in ", (the) x1, ")";
  663.                3: print " (as "; @print_obj x1; print ")";
  664.                4: print "^On ", (the) x1;
  665.                   WriteListFrom(child(x1),
  666.                       ENGLISH_BIT + RECURSE_BIT + PARTINV_BIT
  667.                       + TERSE_BIT + ISARE_BIT + CONCEAL_BIT);
  668.                   ".";
  669.          default: if (x1~=location)
  670.                   {   if (x1 has supporter) print "^On "; else print "^In ";
  671.                       print (the) x1, " you";
  672.                   }
  673.                   else print "^You";
  674.                   print " can ";
  675.                   if (n==5) print "also "; print "see ";
  676.                   WriteListFrom(child(x1),
  677.                       ENGLISH_BIT + WORKFLAG_BIT + RECURSE_BIT
  678.                       + PARTINV_BIT + TERSE_BIT + CONCEAL_BIT);
  679.                   if (x1~=location) ".";
  680.                   " here.";
  681.            }
  682.  
  683.   Examine: switch(n)
  684.            {   1: "Darkness, noun.  An absence of light to see by.";
  685.                2: "You see nothing special about ", (the) x1, ".";
  686.                3: print (The) x1, " ", (isorare) x1, " currently switched ";
  687.                   if (x1 has on) "on."; else "off.";
  688.            }
  689.   LookUnder: switch(n)
  690.            {   1: "But it's dark.";
  691.                2: "You find nothing of interest.";
  692.            }
  693.  
  694.   Search:  switch(n)
  695.            {   1: "But it's dark.";
  696.                2: "There is nothing on ", (the) x1, ".";
  697.                3: print "On ", (the) x1;
  698.                   WriteListFrom(child(x1),
  699.                       TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
  700.                   ".";
  701.                4: "You find nothing of interest.";
  702.                5: "You can't see inside, since ", (the) x1, " ",
  703.                   (isorare) x1, " closed.";
  704.                6: print_ret (The) x1, " ", (isorare) x1, " empty.";
  705.                7: print "In ", (the) x1;
  706.                   WriteListFrom(child(x1),
  707.                       TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT);
  708.                   ".";
  709.            }
  710.  
  711.   Unlock:  switch(n)
  712.            {   1: if (x1 has pluralname) print "They don't ";
  713.                   else print "That doesn't ";
  714.                   "seem to be something you can unlock.";
  715.                2: print_ret (ctheyreorthats) x1,
  716.                   " unlocked at the moment.";
  717.                3: if (x1 has pluralname) print "Those don't ";
  718.                   else print "That doesn't ";
  719.                   "seem to fit the lock.";
  720.                4: "You unlock ", (the) x1, ".";
  721.            }
  722.   Lock:    switch(n)
  723.            {   1: if (x1 has pluralname) print "They don't ";
  724.                   else print "That doesn't ";
  725.                   "seem to be something you can lock.";
  726.                2: print_ret (ctheyreorthats) x1, " locked at the moment.";
  727.                3: "First you'll have to close ", (the) x1, ".";
  728.                4: if (x1 has pluralname) print "Those don't ";
  729.                   else print "That doesn't ";
  730.                   "seem to fit the lock.";
  731.                5: "You lock ", (the) x1, ".";
  732.            }
  733.  
  734.   SwitchOn: switch(n)
  735.            {   1: print_ret (ctheyreorthats) x1,
  736.                   " not something you can switch.";
  737.                2: print_ret (ctheyreorthats) x1,
  738.                   " already on.";
  739.                3: "You switch ", (the) x1, " on.";
  740.            }
  741.   SwitchOff: switch(n)
  742.            {   1: print_ret (ctheyreorthats) x1,
  743.                   " not something you can switch.";
  744.                2: print_ret (ctheyreorthats) x1,
  745.                   " already off.";
  746.                3: "You switch ", (the) x1, " off.";
  747.            }
  748.  
  749.   Open:    switch(n)
  750.            {   1: print_ret (ctheyreorthats) x1,
  751.                   " not something you can open.";
  752.                2: if (x1 has pluralname) print "They seem ";
  753.                   else print "It seems ";
  754.                   "to be locked.";
  755.                3: print_ret (ctheyreorthats) x1,
  756.                   " already open.";
  757.                4: print "You open ", (the) x1, ", revealing ";
  758.                   if (WriteListFrom(child(x1),
  759.                       ENGLISH_BIT + TERSE_BIT + CONCEAL_BIT)==0) "nothing.";
  760.                   ".";
  761.                5: "You open ", (the) x1, ".";
  762.            }
  763.  
  764.   Close:   switch(n)
  765.            {   1: print_ret (ctheyreorthats) x1,
  766.                   " not something you can close.";
  767.                2: print_ret (ctheyreorthats) x1,
  768.                   " already closed.";
  769.                3: "You close ", (the) x1, ".";
  770.            }
  771.   Disrobe: switch(n)
  772.            {   1: "You're not wearing ", (thatorthose) x1, ".";
  773.                2: "You take off ", (the) x1, ".";
  774.            }
  775.   Wear:    switch(n)
  776.            {   1: "You can't wear ", (thatorthose) x1, "!";
  777.                2: "You're not holding ", (thatorthose) x1, "!";
  778.                3: "You're already wearing ", (thatorthose) x1, "!";
  779.                4: "You put on ", (the) x1, ".";
  780.            }
  781.   Eat:     switch(n)
  782.            {   1: print_ret (ctheyreorthats) x1,
  783.                   " plainly inedible.";
  784.                2: "You eat ", (the) x1, ". Not bad.";
  785.            }
  786.   Yes, No:        "That was a rhetorical question.";
  787.   Burn:           "This dangerous act would achieve little.";
  788.   Pray:           "Nothing practical results from your prayer.";
  789.   Wake:           "The dreadful truth is, this is not a dream.";
  790.   WakeOther:      "That seems unnecessary.";
  791.   Kiss:           "Keep your mind on the game.";
  792.   Think:          "What a good idea.";
  793.   Smell:          "You smell nothing unexpected.";
  794.   Listen:         "You hear nothing unexpected.";
  795.   Taste:          "You taste nothing unexpected.";
  796.   Touch:   switch(n)
  797.            {   1: "Keep your hands to yourself!";
  798.                2: "You feel nothing unexpected.";
  799.                3: "If you think that'll help.";
  800.            }
  801.   Dig:            "Digging would achieve nothing here.";
  802.   Cut:            "Cutting ", (thatorthose) x1, " up would achieve little.";
  803.   Jump:           "You jump on the spot, fruitlessly.";
  804.   JumpOver, Tie:  "You would achieve nothing by this.";
  805.   Drink:          "There's nothing suitable to drink here.";
  806.   Fill:           "But there's no water here to carry.";
  807.   Sorry:          #ifdef DIALECT_US;
  808.                   "Oh, don't apologize.";
  809.                   #ifnot;
  810.                   "Oh, don't apologise.";
  811.                   #endif;
  812.   Strong:         "Real adventurers do not use such language.";
  813.   Mild:           "Quite.";
  814.   Attack:         "Violence isn't the answer to this one.";
  815.   Swim:           "There's not enough water to swim in.";
  816.   Swing:          "There's nothing sensible to swing here.";
  817.   Blow:           "You can't usefully blow ", (thatorthose) x1, ".";
  818.   Rub:            "You achieve nothing by this.";
  819.   Set:            "No, you can't set ", (thatorthose) x1, ".";
  820.   SetTo:          "No, you can't set ", (thatorthose) x1, " to anything.";
  821.   WaveHands:      "You wave, feeling foolish.";
  822.   Wave:    switch(n)
  823.            {   1: "But you aren't holding ", (thatorthose) x1, ".";
  824.                2: "You look ridiculous waving ", (the) x1, ".";
  825.            }
  826.   Pull, Push, Turn:
  827.            switch(n)
  828.            {   1: if (x1 has pluralname) print "Those are ";
  829.                   else print "It is ";
  830.                   "fixed in place.";
  831.                2: "You are unable to.";
  832.                3: "Nothing obvious happens.";
  833.                4: "That would be less than courteous.";
  834.            }
  835.   PushDir: switch(n)
  836.            {   1: "Is that the best you can think of?";
  837.                2: "That's not a direction.";
  838.                3: "Not that way you can't.";
  839.            }
  840.   Squeeze: switch(n)
  841.            {   1: "Keep your hands to yourself.";
  842.                2: "You achieve nothing by this.";
  843.            }
  844.   ThrowAt: switch(n)
  845.            {   1: "Futile.";
  846.                2: "You lack the nerve when it comes to the crucial moment.";
  847.            }
  848.   Tell:    switch(n)
  849.            {   1: "You talk to yourself a while.";
  850.                2: "This provokes no reaction.";
  851.            }
  852.   Answer, Ask:    "There is no reply.";
  853.   Buy:            "Nothing is on sale.";
  854.   Sing:           "Your singing is abominable.";
  855.   Climb:          "I don't think much is to be achieved by that.";
  856.   Wait:           "Time passes.";
  857.   Sleep:          "You aren't feeling especially drowsy.";
  858.   Consult:        "You discover nothing of interest in ", (the) x1, ".";
  859. ];
  860.  
  861. ! ---------------------------------------------------------------------------
  862.